<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>继承</title>
	</head>
	<body>
		
	</body>
	<script>
		/*
		//继承，通过原型链实现
		function Box(){		//被继承的函数叫超类型，也叫父类或者基类
			this.name = 'Lee';
		};
		function Desk(){	//继承的函数叫做子类型，或者派生类
			this.age = 100;
		};
		//通过原型链继承，超类型实例化后的对象实例，赋值给子类型的原型属性
		//new Box()会将Box里的构造信息和原型里的信息都叫给Desk
		Desk.prototype = new Box();
		
		var desk1 = new Desk();
		//alert(desk1.age);
		alert(desk1.name);
		
		//使用对象冒充继承
		function Box(name,age){
			this.name = name;
			this.age = age;
		};
		function Desk(name,age){
			Box.call(this,name,age); //对象冒充，对象冒充只能继承构造里的信息
		};
		var desk = new Desk('Lee',100);
		alert(desk.name);
		*/
		//临时中转函数
		function obj(o){	//o表示将要传递进入的一个对象
			function F(){}	//F构造是一个临时新建的对象，用来存储传递过来的对象
			F.prototype = o;//将o对象实例赋值给F构造的原型对象
			return new F(); //最后返回这个得到传递过来的对象的对象实例
		};
		//这是字面量的声明方式，相当于var box = new Box()
		var box = {
			name:'Lee',
			age:100
		};
		//box1就等于new F()
		var box1 = obj(box);
		alert(box1.name);
	</script>
</html>
